home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 140 / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin / games / km21 / src / tnum.c < prev    next >
Text File  |  1999-12-05  |  4KB  |  222 lines

  1. /*
  2.     tnum.c
  3.     
  4. スプライトに定義されている数字をテキストに
  5. 現在:アルファベット入り
  6. */
  7.  
  8. unsigned char    TNUM__buf[64][8*16/8*4];    //バイト毎にプレーン移動
  9.  
  10. unsigned short    TNUM__palet[16];
  11.  
  12. int    TNUM__Init()
  13. {
  14.     int    ssp;
  15.     short    spnum=0;
  16.     short    palnum=0x09;
  17.     short    nn,ln;
  18.     unsigned int    *spptr,dot[8];
  19.     unsigned char    *tnptr,mb;
  20.     
  21.     spfile_def("TNUM.SP",0x00);        //スプライト読み込み
  22.     palfile_def("TNUM.PAL",0x01);
  23.     
  24.     ssp=B_SUPER(0);
  25.     {
  26.         short    *crtc_r21=0xE8002A;
  27.         *crtc_r21&=0xfeff;        //テキスト同時アクセス禁止
  28.     }
  29.  
  30.     {    //パレット設定
  31.         unsigned short    *s,*d,*d1,ln;
  32.         s=0xe82200+32*palnum;
  33.         d=0xe82200;
  34.         d1=TNUM__palet;
  35.         for( ln=0; ln<16; ln++ ){
  36.             *d++=*s;
  37.             *d1++=*s++;
  38.         }
  39. //        d=0xe82200;*d=0xf000;
  40.     }
  41.     
  42.     
  43.  
  44.     for( nn=0; nn<64; nn++ ){
  45.         int    sf;
  46.         spptr=0xEB8000+(spnum+nn)*0x80;
  47.         tnptr=TNUM__buf[nn];
  48.         for( ln=0; ln<16; ln++ ){
  49.  
  50.             dot[0]=(*spptr&0xf0000000)>>28;
  51.             dot[1]=(*spptr&0x0f000000)>>24;
  52.             dot[2]=(*spptr&0x00f00000)>>20;
  53.             dot[3]=(*spptr&0x000f0000)>>16;
  54.             dot[4]=(*spptr&0x0000f000)>>12;
  55.             dot[5]=(*spptr&0x00000f00)>> 8;
  56.             dot[6]=(*spptr&0x000000f0)>> 4;
  57.             dot[7]=(*spptr&0x0000000f);
  58.             spptr++;
  59.  
  60.             for( mb=0x01,sf=0; mb<=0x08; mb<<=1,sf++ ){
  61.                 *tnptr=0;
  62.                 *tnptr|=(((dot[0]&mb)>>sf)<<7);
  63.                 *tnptr|=(((dot[1]&mb)>>sf)<<6);
  64.                 *tnptr|=(((dot[2]&mb)>>sf)<<5);
  65.                 *tnptr|=(((dot[3]&mb)>>sf)<<4);
  66.                 *tnptr|=(((dot[4]&mb)>>sf)<<3);
  67.                 *tnptr|=(((dot[5]&mb)>>sf)<<2);
  68.                 *tnptr|=(((dot[6]&mb)>>sf)<<1);
  69.                 *tnptr|=(((dot[7]&mb)>>sf));
  70.                 tnptr++;
  71.             }
  72.         }
  73.     }
  74.  
  75.     if( ssp>0 ){ B_SUPER(ssp); }
  76. }
  77.  
  78.  
  79. int    TNUM__SetPalet()
  80. {    //パレット設定
  81.     unsigned short    *s,*d,ln;
  82.  
  83.     d=0xe82200;
  84.     s=TNUM__palet;
  85.     for( ln=0; ln<16; ln++ ){
  86.         *d++=*s++;
  87.     }
  88. }
  89.  
  90.  
  91. int    TNUM__Print(x,y,num)
  92. int    x,y,num;    //num=0~9
  93. {
  94.     unsigned char    *base=0xe00000,*vram;
  95.     unsigned char    *tnptr;
  96.     short    ln;
  97.     char    numstr[80];
  98.     
  99.     tnptr=TNUM__buf[num+16];
  100.  
  101.     base+=(y*2048+x);
  102.     for( ln=0; ln<16; ln++ ){
  103.         vram=base;
  104.         *vram=*tnptr++;    vram+=0x20000;
  105.         *vram=*tnptr++;    vram+=0x20000;
  106.         *vram=*tnptr++;    vram+=0x20000;
  107.         *vram=*tnptr++;    vram+=0x20000;
  108.         base+=128;
  109.     }
  110.  
  111. }
  112.  
  113.  
  114.  
  115. int    TASC__Print(x,y,cc)
  116. int    x,y;
  117. char    cc;    //cc=0x20~0x5f
  118. {
  119.     unsigned char    *base=0xe00000,*vram;
  120.     unsigned char    *tnptr;
  121.     short    ln;
  122.     char    numstr[80];
  123.     
  124.     tnptr=TNUM__buf[cc-0x20];
  125.  
  126.     base+=(y*2048+x);
  127.     for( ln=0; ln<16; ln++ ){
  128.         vram=base;
  129.         *vram=*tnptr++;    vram+=0x20000;
  130.         *vram=*tnptr++;    vram+=0x20000;
  131.         *vram=*tnptr++;    vram+=0x20000;
  132.         *vram=*tnptr++;    vram+=0x20000;
  133.         base+=128;
  134.     }
  135.  
  136. }
  137.  
  138.  
  139.  
  140. int    TNUM__PrintSP(x,y)
  141. int    x,y;
  142. {
  143.     unsigned char    *base=0xe00000,*vram;
  144.     unsigned char    sp=0;
  145.     short    ln;
  146.     
  147.     {
  148.         short    *crtc_r21=0xE8002A;
  149.         *crtc_r21&=0xfeff;        //テキスト同時アクセス禁止
  150.     }
  151.  
  152.  
  153.     base+=(y*2048+x);
  154.     for( ln=0; ln<16; ln++ ){
  155.         vram=base;
  156.         *vram=sp;    vram+=0x20000;
  157.         *vram=sp;    vram+=0x20000;
  158.         *vram=sp;    vram+=0x20000;
  159.         *vram=sp;    vram+=0x20000;
  160.         base+=128;
  161.     }
  162.  
  163. }
  164.  
  165.  
  166. int    PrintTD(x,y,num)
  167. int    x,y,num;
  168. {
  169.     char    buf[16],bn;
  170.     sprintf(buf,"%d",num);
  171.     for( bn=0; bn<strlen(buf); bn++ ){
  172.         TNUM__Print(x+bn,y,buf[bn]-'0');
  173.     }
  174. }
  175.  
  176.  
  177. int    Print09d(x,y,num)
  178. int    x,y,num;
  179. {
  180.     char    buf[10],bn;
  181.     sprintf(buf,"%09d",num);
  182.     for( bn=0; bn<9; bn++ ){
  183.         TNUM__Print(x+bn,y,buf[bn]-'0');
  184.     }
  185. }
  186.  
  187.  
  188. int    Print09SP(x,y)
  189. int    x,y;
  190. {
  191.     short    bn;
  192.     for( bn=0; bn<9; bn++ ){
  193.         TNUM__PrintSP(x+bn,y);
  194.     }
  195. }
  196.  
  197.  
  198. int    PrintSPN(x,y,n)
  199. int    x,y;
  200. {
  201.     short    bn;
  202.     for( bn=0; bn<n; bn++ ){
  203.         TNUM__PrintSP(x+n,y);
  204.     }
  205. }
  206.  
  207.  
  208.  
  209. int    PrintSTR(x,y,str)
  210. int    x,y;
  211. char    *str;
  212. {
  213.     char    bn;
  214.  
  215.     for( bn=0; bn<strlen(str); bn++ ){
  216.         TASC__Print(x+bn,y,str[bn]);
  217.     }
  218. }
  219.  
  220.  
  221.  
  222.